﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rappelz.GameServer
{
    public class SetItemEffectInfo
    {
        public const int MAX_OPTION_NUMBER = 4;

        public int nSetID;
        public int nSetPartID;
        public int nTextID;
        public int nUnkdw1;

        public short[] nBaseType = new short[MAX_OPTION_NUMBER];
        public float[] fBaseVar1 = new float[MAX_OPTION_NUMBER];
        public float[] fBaseVar2 = new float[MAX_OPTION_NUMBER]; 
        public short[] nOptType = new short[MAX_OPTION_NUMBER];
        public float[] fOptVar1 = new float[MAX_OPTION_NUMBER];
        public float[] fOptVar2 = new float[MAX_OPTION_NUMBER];
//Function       :   public void SetItemEffectInfo::SetItemEffectInfo(const struct SetItemEffectInfo &)
//Function       :   public void SetItemEffectInfo::SetItemEffectInfo()
//Function       :   public struct SetItemEffectInfo & SetItemEffectInfo::operator=(const struct SetItemEffectInfo &)

        public void Copy(SetItemEffectInfo info)
        {
            nSetID = info.nSetID;
            nSetPartID = info.nSetPartID;
            nUnkdw1 = info.nUnkdw1;
            for(int i = 0; i < MAX_OPTION_NUMBER; ++i)
            {
                nBaseType[i] = info.nBaseType[i];
                fBaseVar1[i] = info.fBaseVar1[i];
                fBaseVar2[i] = info.fBaseVar2[i];
                nOptType[i] = info.nOptType[i];
                fOptVar1[i] = info.fOptVar1[i];
                fOptVar2[i] = info.fOptVar2[i];
            }
        }
    }

    public class CreatureElementalResist
    {
        public short[] nResist = new short[7];

        public void Reset(short v)
        {
            for(int i = 0; i < 7; ++i)
            {
                nResist[i] = v;
            }
        }
    }

    public class CreatureStatAmplifier
    {
        public float stat_id;
        public float strength;
        public float vital;
        public float dexterity;
        public float agility;
        public float intelligence;
        public float mentality;
        public float luck;
//        public CreatureStatAmplifier(cCreatureStatAmplifier &)
        //public CreatureStatAmplifier()
        //public CreatureStatAmplifier & operator=(const struct CreatureStatAmplifier &)
        public void Reset(float v)
        {
            stat_id = v;
            strength = v;
            vital = v;
            dexterity = v;
            agility = v;
            intelligence = v;
            mentality = v;
            luck = v;
        }
    }

    public class CreatureAttributeAmplifier
    {
        public float fCritical;
        public float fCriticalPower;
        public float fAttackPointRight;
        public float fAttackPointLeft;
        public float fDefence;
        public float fBlockDefence;
        public float fMagicPoint;
        public float fMagicDefence;
        public float fAccuracyRight;
        public float fAccuracyLeft;
        public float fMagicAccuracy;
        public float fAvoid;
        public float fMagicAvoid;
        public float fBlockChance;
        public float fMoveSpeed;
        public float fAttackSpeed;
        public float fAttackRange;
        public float fMaxWeight;
        public float fCastingSpeed;
        public float fCoolTimeSpeed;
        public float fItemChance;
        public float fHPRegenPercentage;
        public float fHPRegenPoint;
        public float fMPRegenPercentage;
        public float fMPRegenPoint;
        public float fAttackSpeedRight;
        public float fAttackSpeedLeft;
        public float fDoubleAttackRatio;
        public float fStunResistance;
        public float fMoveSpeedDecreaseResistance;
        public float fHPAdd;
        public float fMPAdd;
        public float fHPAddByItem;
        public float fMPAddByItem;
//        public void CreatureAttributeAmplifier(const struct CreatureAttributeAmplifier &)
//        public void CreatureAttributeAmplifier::CreatureAttributeAmplifier()
//        public struct CreatureAttributeAmplifier & operator=(const struct CreatureAttributeAmplifier &)

        public void Reset(float v)
        {
            fCritical = v;
            fCriticalPower = v;
            fAttackPointRight = v;
            fAttackPointLeft = v;
            fDefence = v;
            fBlockDefence = v;
            fMagicPoint = v;
            fMagicDefence = v;
            fAccuracyRight = v;
            fAccuracyLeft = v;
            fMagicAccuracy = v;
            fAvoid = v;
            fMagicAvoid = v;
            fBlockChance = v;
            fMoveSpeed = v;
            fAttackSpeed = v;
            fAttackRange = v;
            fMaxWeight = v;
            fCastingSpeed = v;
            fCoolTimeSpeed = v;
            fItemChance = v;
            fHPRegenPercentage = v;
            fHPRegenPoint = v;
            fMPRegenPercentage = v;
            fMPRegenPoint = v;
            fAttackSpeedRight = v;
            fAttackSpeedLeft = v;
            fDoubleAttackRatio = v;
            fStunResistance = v;
            fMoveSpeedDecreaseResistance = v;
            fHPAdd = v;
            fMPAdd = v;
            fHPAddByItem = v;
            fMPAddByItem = v;

        }

    }

    public class CreatureElementalResistAmplifier
    {
        public float[] fResist = new float[7];
// Function       :   public void CreatureElementalResistAmplifier(const struct CreatureElementalResistAmplifier &)
// Function       :   public void CreatureElementalResistAmplifier()
// Function       :   public struct CreatureElementalResistAmplifier & operator=(const struct CreatureElementalResistAmplifier &)
        public void Reset(float v)
        {
            for (int i = 0; i < 7; ++i)
            {
                fResist[i] = v;
            }
        }

    }



}
